home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / netz / magplip / source / magplip.i < prev    next >
Text File  |  1995-08-20  |  5KB  |  183 lines

  1.    IFND    MAGPLIP_I
  2. MAGPLIP_I     SET     1
  3.  
  4. ;
  5. ;  $VER: magplip.i 1.2 (20 Aug 1995)
  6. ;
  7. ;  magplip.device - Parallel Line Internet Protocol
  8. ;
  9. ;  Original code written by Oliver Wagner and Michael Balzer.
  10. ;
  11. ;  This version has been completely reworked by Marius Gröger, introducing
  12. ;  slight protocol changes. The new source is a lot better organized and
  13. ;  maintainable.
  14. ;
  15. ;  Additional changes and code cleanup by Jan Kratochvil and Martin Mares.
  16. ;  The new source is significantly faster and yet better maintainable.
  17. ;
  18. ;  (C) Copyright 1993-1994 Oliver Wagner & Michael Balzer
  19. ;  (C) Copyright 1995 Marius Gröger
  20. ;  (C) Copyright 1995 Jan Kratochvil & Martin Mares
  21. ;      All Rights Reserved
  22. ;
  23. ;  $HISTORY:
  24. ;
  25. ;  20 Aug 1995 : 001.002 :  + ASM parts really don't need to know about the
  26. ;                             configuration defaults.
  27. ;                           + using BITDEF macro from exec/types.i
  28. ;  13 Aug 1995 : 001.001 :  code cleanup
  29. ;  12 Feb 1995 : 001.000 :  created
  30. ;
  31.  
  32.  
  33.     IFND EXEC_TYPES_I
  34.     INCLUDE "exec/types.i"
  35.     ENDC
  36.  
  37.     IFND EXEC_LISTS_I
  38.     INCLUDE "exec/lists.i"
  39.     ENDC
  40.  
  41.     IFND EXEC_INTERRUPTS_I
  42.     INCLUDE "exec/interrupts.i"
  43.     ENDC
  44.  
  45.     IFND EXEC_LIBRARIES_I
  46.     INCLUDE "exec/libraries.i"
  47.     ENDC
  48.  
  49.     IFND EXEC_SEMAPHORES_I
  50.     INCLUDE "exec/semaphores.i"
  51.     ENDC
  52.  
  53.     IFND DEVICES_TIMER_I
  54.     INCLUDE "devices/timer.i"
  55.     ENDC
  56.  
  57.     IFND DEVICES_SANA2_I
  58.     INCLUDE "devices/sana2.i"
  59.     ENDC
  60.  
  61.     IFND DOS_DOS_I
  62.     INCLUDE "dos/dos.i"
  63.     ENDC
  64.  
  65.  
  66. ;****************************************************************************
  67.  
  68. PLIP_MAXMTU      equ     8192
  69.    ;
  70.    ; Each data packet is put into this kind of frame before sent over the
  71.    ; line. See below for definitions.
  72.    ;
  73.    STRUCTURE PLIPFrame,0
  74.      USHORT   pf_Sync
  75.      SHORT    pf_Size
  76.      USHORT   pf_CRC
  77.      ULONG    pf_Type
  78.      STRUCT   pf_data,PLIP_MAXMTU
  79.      LABEL PLIPFrame_SIZE
  80.  
  81. PKTFRAMESIZE_1   equ     4
  82. PKTFRAMESIZE_2   equ     6
  83.  
  84. SYNCBYTE_HEAD    equ     $42
  85. SYNCBYTE_CRC     equ     $01
  86. SYNCBYTE_NOCRC   equ     $02
  87. SYNCWORD_CRC     equ     ((SYNCBYTE_HEAD<<8)|SYNCBYTE_CRC)
  88. SYNCWORD_NOCRC   equ     ((SYNCBYTE_HEAD<<8)|SYNCBYTE_NOCRC)
  89.  
  90.  
  91. ;****************************************************************************
  92.  
  93.  
  94.    ;
  95.    ; Central driver static storage. See Flags bits below.
  96.    ;
  97.    STRUCTURE PLIPBase,LIB_SIZE
  98.      UWORD  pb_pad1
  99.      BPTR   pb_SegList
  100.      APTR   pb_MiscBase
  101.      APTR   pb_CIAABase
  102.      APTR   pb_UtilityBase
  103.      APTR   pb_TimerBase
  104.      APTR   pb_DOSBase
  105.      APTR   pb_SysBase
  106.      APTR   pb_Server
  107.      APTR   pb_Task
  108.      STRUCT pb_Interrupt,IS_SIZE
  109.      ULONG  pb_IntSig
  110.      ULONG  pb_IntSigMask
  111.      ULONG  pb_ServerStoppedSigMask
  112.      APTR   pb_ServerPort
  113.      APTR   pb_TimerPort
  114.      STRUCT pb_TimeReq,IOTV_SIZE
  115.      STRUCT pb_DevStats,S2DS_SIZE
  116.      STRUCT pb_ReadList,LH_SIZE
  117.      STRUCT pb_WriteList,LH_SIZE
  118.      STRUCT pb_EventList,LH_SIZE
  119.      STRUCT pb_ReadOrphanList,LH_SIZE
  120.      STRUCT pb_TrackList,LH_SIZE
  121.      STRUCT pb_BufferManagement,LH_SIZE
  122.      STRUCT pb_EventListSem,SS_SIZE
  123.      STRUCT pb_ReadListSem,SS_SIZE
  124.      STRUCT pb_WriteListSem,SS_SIZE
  125.      STRUCT pb_TrackListSem,SS_SIZE
  126.      STRUCT pb_ReadOrphanListSem,SS_SIZE
  127.      STRUCT pb_Lock,SS_SIZE
  128.      ULONG  pb_Retries
  129.      ULONG  pb_ReportBPS
  130.      ULONG  pb_MTU
  131.      ULONG  pb_AllocFlags
  132.      ULONG  pb_Timeout;
  133.      LONG   pb_CollisionDelay
  134.      LONG   pb_ArbitrationDelay
  135.      UBYTE  pb_pad2
  136.      UBYTE  pb_Flags
  137.      STRUCT pb_HandshakeMask,2              ; must be changed when
  138.      STRUCT pb_HandshakeBit,2               ; changing the datatype in .h
  139.      STRUCT pb_SendFrame,PLIPFrame_SIZE
  140.      STRUCT pb_ReceiveFrame,PLIPFrame_SIZE
  141.    LABEL PLIPBase_SIZE
  142.  
  143. ;
  144. ; Bits for PLIPBase->pb_Flags
  145. ;
  146.    BITDEF PLIP,SIDEA,0
  147.    BITDEF PLIP,EXCLUSIVE,1
  148.    BITDEF PLIP,NOTCONFIGURED,2
  149.    BITDEF PLIP,OFFLINE,3
  150.    BITDEF PLIP,SENDCRC,4
  151.    BITDEF PLIP,RECEIVING,5
  152.    BITDEF PLIP,COLLISION,6
  153.    BITDEF PLIP,SERVERSTOPPED,7
  154.  
  155.    ;
  156.    ; Index for PLIPBase->pb_HandshakeBit[]
  157.    ; Note: in contrast to the C-Version, this is actually not the index
  158.    ; but the offset in the array _in_bytes_. Therefore, if you change the
  159.    ; array's datatype, you need to adjust this.
  160.    ;
  161. HS_LINE    equ 0
  162. HS_REQUEST equ 1  ; better: 1*sizeof(UBYTE)
  163.  
  164.  
  165. ;****************************************************************************
  166.  
  167.    ;
  168.    ; Why isn't this in exec/types.i ?
  169.    ;
  170.  
  171.    IFND TRUE
  172. TRUE  equ 1
  173.    ENDC
  174.    IFND FALSE
  175. FALSE equ 0
  176.    ENDC
  177.  
  178.  
  179. ;****************************************************************************
  180.  
  181.  
  182.    ENDC MAGPLIP_I
  183.